/*
 * BodyPart.h
 *
 *  Created on: 10.10.2012
 *      Author: caffeine
 */

#ifndef __BODYPART_H__
#define __BODYPART_H__

#include <object/AnimattedModelObject.h>
#include <object/ContainerNodeObject.h>
#include <IrrlichtDevice.h>
#include <animation/IAnimationRecord.h>
#include <animation/IAnimation.h>
#include <image/ITextureSlot.h>

class CharacterModel;

class BodyPart:public irr::object::AnimattedModelObject{
private:
	irr::io::path fileName;
	irr::scene::IAnimatedMeshSceneNode*node;
	irr::IrrlichtDevice*device;
protected:
	friend class CharacterModel;
	virtual void on_model_load(irr::scene::ISceneNode*parent);
	virtual void on_model_unload();
	
	virtual void on_setCurrentAnimation(irr::animation::IAnimationRecord*record);
	virtual void on_setAnimationGroup(irr::animation::IAnimation*group);
	

public:

	/***
	 * Устанавливает новый путь к моделе. Если модель на момент вызова уже была загружена,
	 * то она выгрузится, установится новый адрес к модели, а потом снова загрузится. Соответственно
	 * если модель загружена не была, то у неё просто установится новый адрес
	 *
	 * @param fileName новый адрес к модели
	 * */
	void setFileName(irr::io::path fileName);
	BodyPart(irr::object::ContainerNodeObject*container,irr::IrrlichtDevice*device);
	~BodyPart();

	/***
	 * Возвращяет созданный объект анимированной модели. Если модель в данный момент не загруженна
	 * то как следствие вернёт NULL
	 *
	 * @return созданная анимированная модель
	 * */
	irr::scene::IAnimatedMeshSceneNode*getAnimationModel();
};


#endif /* BODYPART_H_ */
